# 211224 2217

# Fibonacci series
# 两个元素的总和为下一个数
a,b = 0,1
while b < 10:
	# 输出结果为多行
	# print(b)
	# 输出结果为同一行
	print(b, end=', ')
	a,b = b, a+b

print('end of 13.')

# 211225 2203

# pring() sep参数
a,b,c=1,2,3
print(a,b,c,sep='@')

# 求Fibonacci series of n
# without recursion
a,b,i = 0,1,0
result = []
n = int(input('请输入一个大于0的整数：'))
print('n=', n)

while i<n:
	result.append(b)
	a,b = b,a+b
	i += 1
print("fib#", n, '=', result[n-1])

# 求Fibonacci series of n
# with tail recursion (尾递归？)
import time
n = int(input('请输入一个大于0的整数：'))
a,b = 0,1
start = time.time()

def F(n,a,b):
	'''
	尾递归求解
	'''
	if n == 0:
		return a
	return F(n-1,b,a+b)

print(F(n,a,b))
end = time.time()
print('运行时间：%.2f秒'%(end-start)) # n=233, 0.00秒

def fab(n):
	'''
	普通递归求fibonacci series
	'''
	if n<1:
		print('ERR:输入有误')
		return -1
	if n==1 or n==2:
		return 1
	else:
		return fab(n-1) + fab(n-2)

n = int(input('请输入一个大于0的整数：'))
start = time.time()
print(fab(n))
end = time.time()
print("运行时间(2):%.2f秒"%(end-start)) # n=233,程序卡住（Ctrl+C）
